home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’96 / Booting Gallery / Booting Gallery (source) / Sources / Sound Source / SoundManager.cpp next >
Encoding:
C/C++ Source or Header  |  1996-06-22  |  1.3 KB  |  71 lines  |  [TEXT/BROW]

  1. #include "SoundManager.h"
  2. #include "SoundPlayer.h"
  3.  
  4.  
  5.  
  6. void    SoundManager::PlaySound(short id,Boolean loopQ)
  7. {
  8.     Entry*        entry = NULL;
  9.     
  10.     for(short z = 0;z<fSoundList.Size();z++){
  11.         if(fSoundList[z].id == id){
  12.             entry = &fSoundList[z];
  13.             break;
  14.         }
  15.     }
  16.     
  17.     if(entry != NULL){
  18.         fSoundPlayer->PlaySnd(entry->sndHandle,entry->length,loopQ);
  19.     }
  20. }
  21.  
  22.  
  23. OSErr    SoundManager::PreloadSounds()
  24. {
  25.     OSErr        err = noErr;
  26.     UInt32        num = Count1Resources('snd ');
  27.     
  28.     err = fSoundList.Reallocate(num);
  29.     if(err == noErr){
  30.         for(short z = 0;z<num;z++){
  31.             fSoundList[z].sndHandle = Get1IndResource('snd ',z+1);
  32.             if(fSoundList[z].sndHandle != NULL){
  33.                 OSType            type;
  34.                 Str255            name;
  35.                 
  36.                 GetResInfo(fSoundList[z].sndHandle, &fSoundList[z].id, &type, name);
  37.                 DetachResource(fSoundList[z].sndHandle);
  38.                 HLock(fSoundList[z].sndHandle);
  39.                 fSoundList[z].length = GetHandleSize(fSoundList[z].sndHandle);
  40.             }else{
  41.                 err = -108;
  42.                 break;
  43.             }
  44.         }    
  45.     }
  46.     
  47.     return err;
  48. }
  49.  
  50.  
  51. SoundManager::~SoundManager()
  52. {
  53.     delete fSoundPlayer;
  54.     
  55.     for(short z = 0;z<fSoundList.Size();z++){
  56.         if(fSoundList[z].sndHandle != NULL){
  57.             DisposeHandle(fSoundList[z].sndHandle);
  58.         }
  59.     }
  60. }
  61.  
  62.  
  63. SoundManager::SoundManager(OSErr& err)
  64.     :    fSoundPlayer(NULL)
  65. {
  66.     err = PreloadSounds();
  67.     if(err == noErr){
  68.         fSoundPlayer = new SoundPlayer(err);
  69.     }
  70. }
  71.